function seed= initrandn(seed)
%
% initrandn() sets the state for Matlab's normal (Gaussian) random number
% generator. (Matlab has two generators-- 'rand' and 'randn'-- for uniform
% and normal random numbers, respectively.  Each of these maintains its own
% state).
%
% If the optional calling argument is missing, initrandn() prompts the user
% to enter a seed interactively.  If the optional calling argument is
% present but is an empty matrix, or if the user input is empty, a default
% seed is generated based on the current date and time.

% Generate a default initial seed by taking the dot-product of a constant
% vector and the transpose of the clock vector (this converts the clock
% vector into a large integer):

def= floor( [1 30*24*60*60 24*60*60 60*60 60 1] * clock' );

% If the calling argument is missing, prompt the user to specify a seed:

if (nargin == 0)
   prompt= '\nInitial seed (integer) for random number generator: ';
   seed= input(prompt);
end

if (isempty(seed))
   fprintf('Using default seed derived from current date/time: %d\n', def);
   seed= def;
end

randn('state', seed);
